home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
utils
/
tweak16b
/
xintro
/
xintro.txt
< prev
Wrap
Text File
|
1993-11-25
|
23KB
|
772 lines
(HNxHHO$B<BBBB<$<BBBB<<BBBB<$BBBBBF:0BBBBF:$BBBF:B<""AAA""AAAAA"<B@@B<" <2\A">>xDDxDNDD<`<>BB=><BBBB<BBBBF:2L\bBBBB&AaQIECA8$>""">0@@A>@@@ b$(. b$(*
$ $ $DDDDDDD¬U¬U¬U¬U¬U¬U¬Uw▌w▌w▌w▌w▌w▌w▌°°°⌠ⁿ°°⌠⌠ⁿ⌠⌠ⁿⁿ°°° ≈ ≈ ≈≈ ° ≡≡≡≡≡≡≡≡≡≡≡≡≡≡ 7HH7"B\DBBRL~BB@@@@@@?R~!!~?DDDD8BBBB|@@Ç>P>III>"AA""AAA"Uw<DDDD86II6"EIQ"\ @@ "AAAAA> > hH02L2L$$<H(,$<>>>>>>> VMODE=VIDEOMODEGET
IF WHICHVGA = 0 THEN STOP
DUMMY=RES640
SETVIEW 100, 100, 539, 379
FILLVIEW 10
WHILE INKEY$ = ""
WEND
VIDEOMODESET VMODE
END
63
FONTGETINFO
PROTOTYPE
SUB FONTGETINFO (Width%, Height%)
INPUT
no input parameters
WEND
MOUSEEXIT
VIDEOMODESET VMODE
END
86
MOUSECURSORDEFAULT
PROTOTYPE
SUB MOUSECURSORDEFAULT ()
INPUT
no input parameters
OUTPUT
no value returned
USAGE
MOUSECURSORDEFAULT defines the mouse cursor to be a small
,K$╖┼╘╤░XQ)σ┤ö≡÷┴─┤àñT┘,╘¬àñX9╘⌠àñ\9╘UÜ╢≤`9╘4a╘d9╘UTa╘h9╘ta╘l9╘Uöa╘p9╘┤a╘t┘PT±x┴îÇ╖0▓ïα│ÅαU┤ôα╡ùα╢¢α╖úΓ╘pǺΓ╕¡αë ╚┴πì°sKÉφb<$⌡▌ë φë φë I1φë Eφë $YφÆë (mφë ,üφë 0$òφë á⌐φë ñ╜φë I¿╤φë ¼σφë ░∙φÆë 4²ë ┤!²ë ╕$5²ë ╝I²ë └]²ë ⌐8q²ë <àⁿΦiǬ∙PÖÇ ¥Ç
ⁿ░╨â@%8@ΓΦá╝╤░≡cÑÅ*$░╕≡ż≡τ╥m¿⌡ε ╨@#µ≈$âh$âαra╨à`¥è∩Ç%Ç +─▀ TîcOî∩â°1<@ [$¿Ç¼MMl·0ƒ Y¼─!%6a▐è ¥ì ßá+?± P<îaTTV╪iÇ¡≥░`_ñ»%Çá᪠P█º»ε`éa∙É%H«┴íA%Gár∙É
iw∙Éiφ`╧≥≡╤Çmⁿ▒
]ÆAáσw7░⌡∩ $·╟Ç√É&^` ┐$ⁿ $■ $╒ nk$J-ÉQ1£PéBù »0αQ/Ñ4╜£░ºP≈Ñ4Ç⌡$(ª▀$@C]Æé≈└╕_SÇçÑ4=iÉ⌠ä╣<_np@Ñ45ò▒Y3ü¼Qí░.i>╠@5+┴╙É╛╙$@#┴@«╦
$╤
#@Ñú4,p&e÷ü¼_ÇQºÑ4òQ ü@;¡_áQ@e╠≥@mp!┤a╘O░√`Pñź ÇT°8ÿ!¼Åñ$½╙"q¿ PñCÇ¿α√└╥░eT"ß<p°%Pæ(╧%pδ¥/OêW0Ǽbφ φ B@[â¼8â≥µ≤( ¿⌡%(Ç∩áTÿp+óÜ▓0!Σ±(1±░┤ÖÇD└D0Å╡` $«îO@╧1
a╝╤j-0ñ│`@╖bΦaT1═⌠╝╤Σ²¼±,1öíî9lÿ28ÇÅ`Γî¿P²$,N0┴O0a╫δ≤0σú`°î╖#0δ≡└X▄1»Σî(▒¥Ç█Ñ"qá√1CÇú╟╨º Å
FTΘ²î└1ÇY0 w ²à░$@AÅ`╦Φ¼╘`▄1A }┐Ç*5ΩSδδî`¼îaδæ¼î51¿⌡Ω╜⌠ ¼¥╬ü└Qî1S╛≤î9╨iÇ,∙PU(}Ç$üÇ àÇ`σìÇ`QαÜBO$%ÿÇ╧"$Ç«Ç]É.┬\`%WÉ$ W0 ÄâO0]αG┬ur╩░£▒Q¢ú╔Ç≡°s?`X0╘`@ µWâ@╣aá εdq`¥9?Ç&+o0µyÄΣAÅuV(7P╬±@IdQ╕@Å┤@;Ç▓?Çò│CÇ┤╟╨╡KÇÄ30ⁿφ° ó╬ì+]Ä╦≡ Mö╝σ ²y5<!└▀óâ╝É3~mp $<╛≤9Æ-2ⁿ≡@T,╞Σa,)Pæ└¥#¼╪Q┤S(¼@Aîa≡╤@Ö²±⌠KëD─┴▒▀0╨Ñ$╩-0 ╨ê*╙▓edm`î=3Kß-10è=≥≤²└£mîjy ÿe²ⁿ╨i╕e▓ΣmαÖ╢C%Ç*ê*0EátQZ`mÄLP% °üⁿªüNQ∙ T¿<qtWΩc z░ÅÇñΩçǪçÇ«;└<┐á¼¥. á?<Σscî)áí := 0;
end;
end;
end;
WaitToGo;
end; { UserLineStylePlay }
procedure SayGoodbye;
{ Say goodbye and then exit the program }
var
ViewInfo : ViewPortType;
begin
MainWindow('');
GetViewSettings(ViewInfo);
SetTextStyle(TriplexFont, HorizDir, 4);
SetTextJustify(CenterText, CenterText);
with ViewInfo do
OutTextXY((x2-x1) div 2, (y2-y1) div 2, 'That''s all folks!');
StatusLine('Press any key to quit...');
repeat until KeyPressed;
end; { SayGoodbye }
PROCEDURE SelectMode;
VAR
choice1,choice2 : CHAR;
xsize,ysize : WORD;
BEGIN
(* Let's select a mode *)
ClrScr;
WriteLn('VESADEMO:');
WriteLn('1. 256 colors');
WriteLn('2. 32768 colors');
WriteLn('3. 65536 colors');
WriteLn('4. 16777216 colors');
WriteLn('Q uit');
WriteLn;
Write('Your choice: ');
REPEAT
ReadLn(choice1);
IF choice1 <> '1' THEN BEGIN
WriteLn('Sorry !');
WriteLn('This demo wasn''t written for more as 256 colors !');
WriteLn('You would only get a limited impression of the Hi-& TrueColor modes...');
WriteLn('Switching to 256 colors.');
choice1 := '1';
END;
UNTIL choice1 IN ['1'..'4','q'];
IF choice1 = 'q' THEN Halt;
WriteLn;
WriteLn;
WriteLn('a. 320x200');
WriteLn('b. 640x480');
WriteLn('c. 800x600');
WriteLn('d. 1024x768');
WriteLn('e. 1280x1024');
WriteLn('Q uit');
WriteLn;
Write('Your choice: ');
REPEAT
ReadLn(choice2);
UNTIL choice2 IN ['a'..'e','q'];
IF choice2 = 'q' THEN Halt;
CASE choice2 OF
'a' : BEGIN
xsize := 320;
ysize := 200;
END;
'b' : BEGIN
xsize := 640;
ysize := 480;
END;
'c' : BEGIN
xsize := 800;
ysize := 600;
END;
'd' : BEGIN
xsize := 1024;
ysize := 768;
END;
'e' : BEGIN
xsize := 1280;
ysize := 1024;
END;
END;
CASE choice1 OF
'1' : mode := FindVesaMode(xsize,ysize,8);
'2' : mode := FindVesaMode(xsize,ysize,15);
'3' : mode := FindVesaMode(xsize,ysize,16);
'4' : mode := FindVesaMode(xsize,ysize,24);
END;
IF mode = 0 THEN BEGIN
WriteLn('No such mode could be found !');
WriteLn('Switching to to 320x200.');
ReadKey;
mode := V320x200x256;
END;
END;
begin { program body }
SelectMode;
Initialize;
ReportStatus;
{ AspectRatioPlay; }
FillEllipsePlay;
SectorPlay;
WriteModePlay;
ColorPlay;
{ PalettePlay only intended to work on these drivers: }
if (GraphDriver = EGA) or
(GraphDriver = EGA64) or
(GraphDriver = VGA) then
PalettePlay;
PutPixelPlay;
{ PutImagePlay; }
RandBarPlay;
BarPlay;
Bar3DPlay;
ArcPlay;
CirclePlay;
PiePlay;
LineToPlay;
LineRelPlay;
{ LineStylePlay; }
{ UserLineStylePlay; }
TextDump;
TextPlay;
CrtModePlay;
FillStylePlay;
FillPatternPlay;
PolyPlay;
SayGoodbye;
{ CloseGraph; }
CloseVesa;
end.
***************************************************
'* SHOW D2ROTATE (ABOUT THE ORIGIN)
'****************************************************************∞╥≤c≤*φè#^│v/╒:j═φ0t+l▓ô"¬"g└≡?%ªêΣ│H╫½╫╜├¿U'╒⌐⌡ ßV?╩¬ujOΦçEZ1∞▐!▄B╛Σ8║æ]1GlNÜ┐q▌▓;ô$ΦzE<cª*bEô#ä╧ñÅ"∩─LrdaÖ╠º╫a^¥£å╬1~)@ëÖMδ╫0═6DäFê¬Çv┼ß╨kæpτ╪É)}ª 1w3╤╧ü⌡¥╓h▓╣≈ïÅaÑ[TⁿHqªÉ╝DKÄ─Y-∞tT╤Θ╨º╟╪.*ÇI9lΦ≈{πτcσ$τπßoFr╪╨∩┼╞╟;O2■e²LÜ4^N|╪½ÅO?╔°FOz`╟╟╟'<>>π$πΘù6·Xgî╖│°oîδπGƒd╝▀░?■╪╔_9L ⌡ôⁿq'æO▀ƒn4╔▀╚▄┼3pτ.òO°·}÷╕ⁿ±'æO?ít│!√8ßÑ≤/┐╣p┼≥┘E╦Vox╕cΦé5╟╚º╙$?√$≥ΘZεsî≡åìΓpKù¢ïß X╥ 9╞≈\µk┤O¥_ 5Üö\≤éÄ┌╤A[╤ÿáï┼éNⁿÅu16 g,%hc╙╨cD╨Vï┘R¢öKñR;8εáΣ╢╪ós╤π╡á└èxgzPÄMú╫yαºÉ+σJ¢i+▓â3╥ ═Ñ╙î^ºG▓█πérφçs %#(╗⌠?┼%u8≡6+QÉ))ò)Afw≈╣╪)B&4░åLXV:δät@Å.;5Φf╢Ät┐ΣJ╫─U8úÇ╟éö£╕p╔┴⌠vg╨╬╥é÷╪╣┬ΓI.ç≡^v╤ZΦÇ& ╒┌6ñô6XßNè╡╬E₧Ñ
kIº╠▄A+╣╥éb²tæ-Y¡½αÑa═uuîÇ╢αêvhuª╡SÅ┤vèùú¥F;p<d⌐/F─d█éT%▓KΦû=q■öI┐┐╠6S$▒÷╚ENΩ¥Fû9╔┌R'╝ ╧φ└?g┬j▓0═/b╖₧─mûé╢┌»ÿÄë/·<éò■░╤╟╢├Xσ:╥P3Θ"╬Læsφ░┌öSö!╗¿*mN£WΣÇ£┤~#╗ææ≥RΩóh:à▌.æ≈╕▌v£äàd▒à╒├=░╖π║$howeg*╬ 6ù▄ƒô╕φ░Ö╢qΘD>(w@úKεHÆ╛öúΣU
éÜR╔╤W▄èê 2M%ó.▓SNÖA1ùJE╢║l]▓¿>\%└Å4ßO▄£â⌐& ê/)8vSP▀▓ôⁿææ√ü√ÑÄa⌠â╚4S╓╟P-?Σá╕▓Næ*q╡UΘ▓≈^ñ·I.rúR&$Y^╚%è≡B┌≈Ceat
Color := RandColor;
SetColor(Color);
SetFillStyle(Random(CloseDotFill)+1, Color);
Bar3D(Random(MaxWidth), Random(MaxHeight),
Random(MaxWidth), Random(MaxHeight), 0, TopOff);
until KeyPressed;
WaitToGo;
end; { RandBarPlay }
procedure ArcPlay;
{ Draw random arcs on the screen }
var
MaxRadius : word;
EndAngle : word;
ArcInfo : ArcCoordsType;
begin
MainWindow('Arc / GetArcCoords demonstration');
StatusLine('Esc aborts or press a key');
MaxRadius := MaxY div 10;
repeat
SetColor(RandColor);
EndAngle := Random(360);
SetLineStyle(SolidLn, 0, NormWidth);
Arc(Random(MaxX), Random(MaxY), Random(EndAngle), EndAngle, Random(MaxRadius));
GetArcCoords(ArcInfo);
with ArcInfo do
begin
Line(X, Y, XStart, YStart);
Line(X, Y, Xend, Yend);
end;
until KeyPressed;
WaitToGo;
end; { ArcPlay }
procedure PutPixelPlay;
{ Demonstrate the PutPixel and GetPixel commands }
const
Seed = 1962; { A seed for the random number generator }
NumPts = 2000; { The number of pixels plotted }
Esc = #27;
var
I : word;
X, Y, Color : word;
XMax, YMax : integer;
ViewInfo : ViewPortType;
begin
MainWindow('PutPixel / GetPixel demonstration');
StatusLine('Esc aborts or press a key...');
GetViewSettings(ViewInfo);
with ViewInfo do
begin
XMax := (x2-x1-1);
YMax := (y2-y1-1);
end;
while not KeyPressed do
begin
{ Plot random pixels }
RandSeed := Seed;
I := 0;
while (not KeyPressed) and (I < NumPts) do
begin
Inc(I);
PutPixel(Random(XMax)+1, Random(YMax)+1, RandColor);
end;
{ Erase pixels }
RandSeed := Seed;
I := 0;
while (not KeyPressed) and (I < NumPts) do
begin
Inc(I);
X := Random(XMax)+1;
Y := Random(YMax)+1;
Color := GetPixel(X, Y);
if Color = RandColor then
PutPixel(X, Y, 0);
end;
end;
WaitToGo;
end; { PutPixelPlay }
procedure PutImagePlay;
{ Demonstrate the GetImage and PutImage commands }
const
r = 20;
StartX = 100;
StartY = 50;
var
CurPort : ViewPortType;
procedure MoveSaucer(var X, Y : integer; Width, Height : integer);
var
Step : integer;
begin
Step := Random(2*r);
if Odd(Step) then
Step := -Step;
X := X + Step;
Step := Random(r);
if Odd(Step) then
Step := -Step;
Y := Y + Step;
{ Make saucer bounce off viewport walls }
with CurPort do
begin
if (x1 + X + Width - 1 > x2) then
X := x2-x1 - Width + 1
else
if (X < 0) then
X := 0;
if (y1 + Y + Height - 1 > y2) then
Y := y2-y1 - Height + 1
else
if (Y < 0) then
Y := 0;
end;
end; { MoveSaucer }
var
Pausetime : word;
Saucer : pointer;
X, Y : integer;
ulx, uly : word;
lrx, lry : word;
Size : word;
I : word;
begin
ClearDevice;
FullPort;
{ PaintScreen }
ClearDevice;
MainWindow('GetImage / PutImage Demonstration');
StatusLine('Esc aborts or press a key...');
GetViewSettings(CurPort);
{ DrawSaucer }
Ellipse(StartX, StartY, 0, 360, r, (r div 3)+2);
Ellipse(StartX, StartY-4, 190, 357, r, r div 3);
Line(StartX+7, StartY-6, StartX+10, StartY-12);
Circle(StartX+10, StartY-12, 2);
Line(StartX-7, StartY-6, StartX-10, StartY-12);
Circle(StartX-10, StartY-12, 2);
SetFillStyle(SolidFill, MaxColor);
FloodFill(StartX+1, StartY+4, GetColor);
{ ReadSaucerImage }
ulx := StartX-(r+1);
uly := StartY-14;
lrx := StartX+(r+1);
lry := StartY+(r div 3)+3;
Size := ImageSize(ulx, uly, lrx, lry);
GetMem(Saucer, Size);
GetImage(ulx, uly, lrx, lry, Saucer^);
{ PutImage(ulx, uly, Saucer^, XORput); { erase image }
{ Plot some "stars" }
for I := 1 to 1000 do
PutPixel(Random(MaxX), Random(MaxY), RandColor);
X := MaxX div 2;
Y := MaxY div 2;
PauseTime := 70;
{ Move the saucer around }
repeat
{ PutImage(X, Y, Saucer^, XORput); { draw image }
Delay(PauseTime);
{ PutImage(X, Y, Saucer^, XORput); { erase image }
MoveSaucer(X, Y, lrx - ulx + 1, lry - uly + 1); { width/height }
until KeyPressed;
FreeMem(Saucer, size);
WaitToGo;
end; { PutImagePlay }
procedure PolyPlay;
{ Draw random polygons with random fill styles on the screen }
const
MaxPts = 5;
type
PolygonType = array[1..MaxPts] of PointType;
var
Poly : PolygonType;
I, Color : word;
begin
MainWindow('FillPoly demonstration');
StatusLine('Esc aborts or press a key...');
repeat
Color := RandColor;
SetFillStyle(Random(11)+1, Color);
SetColor(Color);
for I := 1 to MaxPts do
with Poly[I] do
begin
X := Random(MaxX);
Y := Random(MaxY);
end;
FillPoly(MaxPts, Poly);
until KeyPressed;
WaitToGo;
end; { PolyPlay }
procedure FillStylePlay;
{ Display all of the predefined fill styles available }
var
Style : word;
Width : word;
Height : word;
X, Y : word;
I, J : word;
ViewInfo : ViewPortType;
procedure DrawBox(X, Y : word);
begin
SetFillStyle(Style, MaxColor);
with ViewInfo do
Bar(X, Y, X+Width, Y+Height);
Rectangle(X, Y, X+Width, Y+Height);
OutTextXY(X+(Width div 2), Y+Height+4, Int2Str(Style));
Inc(Style);
end; { DrawBox }
begin
MainWindow('Pre-defined fill styles');
GetViewSettings(ViewInfo);
with ViewInfo do
begin
Width := 2 * ((x2+1) div 13);
Height := 2 * ((y2-10) div 10);
end;
X := Width div 2;
Y := Height div 2;
Style := 0;
for J := 1 to 3 do
begin
for I := 1 to 4 do
begin
DrawBox(X, Y);
Inc(X, (Width div 2) * 3);
end;
X := Width div 2;
Inc(Y, (Height div 2) * 3);
end;
SetTextJustify(LeftText, TopText);
WaitToGo;
end; { FillStylePlay }
procedure FillPatternPlay;
{ Display some user defined fill patterns }
const
Patterns : array[0..11] of FillPatternType = (
($AA, $55, $AA, $55, $AA, $55, $AA, $55 üÖü üÖü !BBäx!!!BBäx!BBäx"""DDêp""DDêp>"""BBääêp""!"BDäêêp>IÉÆ| ° @≥î>00>><Dêx !BBäx""DDêp&<"DDêê&22TTêêê$>$< @äêp> ⁿBBBB< @@Ç****DDDDDDDU¬U¬U¬U¬U¬U¬U¬▌w▌w▌w▌w▌w▌w▌w°°°≥■°°≥≥■≥≥■■°°° ≤ ≤ ≤≤ ° ≡≡≡≡≡≡≡≡≡≡≡≡≡≡ ;DDD; $"Bdÿ>@@@>||>Ac]AAA1N"A""2, `1NA"*III*<Bü üB<<BüüüB<A"\"QIE" < <BBBB @@ ~ ? @ÇB$$B ""A$$"AII6 üBr»$**IIII**ccregion. The region is defined as any pixel of
OldColor which has a path of pixels of OldColor or NewColor
with sides touching back to the seed point, (XSeed, YSeed).
Therefore, only pixels of OldColor are modified and no other
information is changed.
SEE ALSO
DRWFILLBOX, DRWFILLCIRCLE, DRWFILLELLIPSE, FILLAREA,
FILLCONVEXPOLY, FILLPAGE, FILLPOLY, FILLSCREEN, FILLVIEW,
SETVIEW
EXAMPL(HNxHHO$B<BBBB<$<BBBB<<BBBB<$BBBBBF:0BBBBF:$BBBF:B<""AAA""AAAAA"<B@@B<" <2\A">>xDDxDNDD<`<>BB=><BBBB<BBBBF:2L\bBBBB&AaQIECA8$>""">0@@A>@@@ b$(. b$(*
$ $ $DDDDDDD¬U¬U¬U¬U¬U¬U¬Uw▌w▌w▌w▌w▌w▌w▌°°°⌠ⁿ°°⌠⌠ⁿ⌠⌠ⁿⁿ°°° ≈ ≈ ≈≈ ° ≡≡≡≡≡≡≡≡≡≡≡≡≡≡ 7HH7"B\DBBRL~BB@@@@@@?R~!!~?DDDD8BBBB|@@Ç>P>III>"AA""AAA"Uw<DDDD86II6"EIQ"\ @@ "AAAAA> > hH02L2L$$<H(,$<>>>>>>> VMODE=VIDEOMODEGET
IF WHICHVGA = 0 THEN STOP
DUMMY=RES640
SETVIEW 100, 100, 539, 379
FILLVIEW 10
WHILE INKEY$ = ""
WEND
VIDEOMODESET VMODE
END
63
FONTGETINFO
PROTOTYPE
SUB FONTGETINFO (Width%, Height%)
INPUT
no input parameters
WEND
MOUSEEXIT
VIDEOMODESET VMODE
END
86
MOUSECURSORDEFAULT
PROTOTYPE
SUB MOUSECURSORDEFAULT ()
INPUT
no input parameters
OUTPUT
no value returned
USAGE
MOUSECURSORDEFAULT defines the mouse cursor to be a small
,K$╖┼╘╤░XQ)σ┤ö≡÷┴─┤àñT┘,╘¬àñX9╘⌠àñ\9╘UÜ╢≤`9╘4a╘d9╘UTa╘h9╘ta╘l9╘Uöa╘p9╘┤a╘t┘PT±x┴îÇ╖0▓ïα│ÅαU┤ôα╡ùα╢¢α╖úΓ╘pǺΓ╕¡αë ╚┴πì°sKÉφb<$⌡▌ë φë φë I1φë Eφë $YφÆë (mφë ,üφë 0$òφë á⌐φë ñ╜φë I¿╤φë ¼σφë ░∙φÆë 4²ë ┤!²ë ╕$5²ë ╝I²ë └]²ë ⌐8q²ë <àⁿΦiǬ∙PÖÇ ¥Ç
ⁿ░╨â@%8@ΓΦá╝╤░≡cÑÅ*$░╕≡ż≡τ╥m¿⌡ε ╨@#µ≈$âh$âαra╨à`¥è∩Ç%Ç +─▀ TîcOî∩â°1<@ [$¿Ç¼MMl·0ƒ Y¼─!%6a▐è ¥ì ßá+?± P<îaTTV╪iÇ¡≥░`_ñ»%Çá᪠P█º»ε`éa∙É%H«┴íA%Gár∙É
iw∙Éiφ`╧≥≡╤Çmⁿ▒
]ÆAáσw7░⌡∩ $·╟Ç√É&^` ┐$ⁿ $■ $╒ nk$J-ÉQ1£PéBù »0αQ/Ñ4╜£░ºP≈Ñ4Ç⌡$(ª▀$@C]Æé≈└╕_SÇçÑ4=iÉ⌠ä╣<_np@Ñ45ò▒Y3ü¼Qí░.i>╠@5+┴╙É╛╙$@#┴@«╦
$╤
#@Ñú4,p&e÷ü¼_ÇQºÑ4òQ ü@;¡_áQ@e╠≥@mp!┤a╘O░√`Pñź ÇT°8ÿ!¼Åñ$½╙"q¿ PñCÇ¿α√└╥░eT"ß<p°%Pæ(╧%pδ¥/OêW0Ǽbφ φ B@[â¼8â≥µ≤( ¿⌡%(Ç∩áTÿp+óÜ▓0!Σ±(1±░┤ÖÇD└D0Å╡` $«îO@╧1
a╝╤j-0ñ│`@╖bΦaT1═⌠╝╤Σ²¼±,1öíî9lÿ28ÇÅ`Γî¿P²$,N0┴O0a╫δ≤0σú`°î╖#0δ≡└X▄1»Σî(▒¥Ç█Ñ"qá√1CÇú╟╨º Å
FTΘ²î└1ÇY0 w ²à░$@AÅ`╦Φ¼╘`▄1A }┐Ç*5ΩSδδî`¼îaδæ¼î51¿⌡Ω╜⌠ ¼¥╬ü└Qî1S╛≤î9╨iÇ,∙PU(}Ç$üÇ àÇ`σìÇ`QαÜBO$%ÿÇ╧"$Ç«Ç]É.┬\`%WÉ$ W0 ÄâO0]αG┬ur╩░£▒Q¢ú╔Ç≡°s?`X0╘`@ µWâ@╣aá εdq`¥9?Ç&+o0µyÄΣAÅuV(7P╬±@IdQ╕@Å┤@;Ç▓?Çò│CÇ┤╟╨╡KÇÄ30ⁿφ° ó╬ì+]Ä╦≡ Mö╝σ ²y5<!└▀óâ╝É3~mp $<╛≤9Æ-2ⁿ≡@T,╞Σa,)Pæ└¥#¼╪Q┤S(¼@Aîa≡╤@Ö²±⌠KëD─┴▒▀0╨Ñ$╩-0 ╨ê*╙▓edm`î=3Kß-10è=≥≤²└£mîjy ÿe²ⁿ╨i╕e▓ΣmαÖ╢C%Ç*ê*0EátQZ`mÄLP% °üⁿªüNQ∙ T¿<qtWΩc z░ÅÇñΩçǪçÇ«;└<┐á¼¥. á?<Σscî)áí := 0;
end;
end;
end;
WaitToGo;
end; { UserLineStylePlay }
procedure SayGoodbye;
{ Say goodbye and then exit the program }
var
ViewInfo : ViewPortType;
begin
MainWindow('');
GetViewSettings(ViewInfo);
SetTextStyle(TriplexFont, HorizDir, 4);
SetTextJustify(CenterText, CenterText);
with ViewInfo do
OutTextXY((x2-x1) div 2, (y2-y1) div 2, 'That''s all folks!');
StatusLine('Press any key to quit...');
repeat until KeyPressed;
end; { SayGoodbye }
PROCEDURE SelectMode;
VAR
choice1,choice2 : CHAR;
xsize,ysize : WORD;
BEGIN
(* Let's select a mode *)
ClrScr;
WriteLn('VESADEMO:');
WriteLn('1. 256 colors');
WriteLn('2. 32768 colors');
WriteLn('3. 65536 colors');
WriteLn('4. 16777216 colors');
WriteLn('Q uit');
WriteLn;
Write('Your choice: ');
REPEAT
ReadLn(choice1);
IF choice1 <> '1' THEN BEGIN
WriteLn('Sorry !');
WriteLn('This demo wasn''t written for more as 256 colors !');
WriteLn('You would only get a limited impression of the Hi-& TrueColor modes...');
WriteLn('Switching to 256 colors.');
choice1 := '1';
END;
UNTIL choice1 IN ['1'..'4','q'];
IF choice1 = 'q' THEN Halt;
WriteLn;
WriteLn;
WriteLn('a. 320x200');
WriteLn('b. 640x480');
WriteLn('c. 800x600');
WriteLn('d. 1024x768');
WriteLn('e. 1280x1024');
WriteLn('Q uit');
WriteLn;
Write('Your choice: ');
REPEAT
ReadLn(choice2);
UNTIL choice2 IN ['a'..'e','q'];
IF choice2 = 'q' THEN Halt;
CASE choice2 OF
'a' : BEGIN
xsize := 320;
ysize := 200;
END;
'b' : BEGIN
xsize := 640;
ysize := 480;
END;
'c' : BEGIN
xsize := 800;
ysize := 600;
END;
'd' : BEGIN
xsize := 1024;
ysize := 768;
END;
'e' : BEGIN
xsize := 1280;
ysize := 1024;
END;
END;
CASE choice1 OF
'1' : mode := FindVesaMode(xsize,ysize,8);
'2' : mode := FindVesaMode(xsize,ysize,15);
'3' : mode := FindVesaMode(xsize,ysize,16);
'4' : mode := FindVesaMode(xsize,ysize,24);
END;
IF mode = 0 THEN BEGIN
WriteLn('No such mode could be found !');
WriteLn('Switching to to 320x200.');
ReadKey;
mode := V320x200x256;
END;
END;
begin { program body }
SelectMode;
Initialize;
ReportStatus;
{ AspectRatioPlay; }
FillEllipsePlay;
SectorPlay;
WriteModePlay;
ColorPlay;
{ PalettePlay only intended to work on these drivers: }
if (GraphDriver = EGA) or
(GraphDriver = EGA64) or
(GraphDriver = VGA) then
PalettePlay;
PutPixelPlay;
{ PutImagePlay; }
RandBarPlay;
BarPlay;
Bar3DPlay;
ArcPlay;
CirclePlay;
PiePlay;
LineToPlay;
LineRelPlay;